package com.example.resultinterceptor.service;

import com.example.resultinterceptor.entity.po.User;

import java.util.List;

public interface UserService {

    /**
     * 根据ID获取用户信息
     */
    User getUserById(Long id);

    /**
     * 根据用户名获取用户信息
     */
    User getUserByUsername(String username);

    /**
     * 根据邮箱获取用户信息
     */
    User getUserByEmail(String email);

    /**
     * 获取所有激活用户
     */
    List<User> getActiveUsers();

    /**
     * 根据昵称模糊查询用户
     */
    List<User> getUsersByNickname(String nickname);

    /**
     * 获取所有用户
     */
    List<User> getAllUsers();

    /**
     * 保存用户
     */
    User saveUser(User user);

    /**
     * 更新用户
     */
    boolean updateUser(User user);

    /**
     * 删除用户
     */
    boolean deleteUser(Long id);

    // ========== JDBC 报错示例方法 ==========

    /**
     * 测试SQL语法错误
     */
    List<User> testSqlSyntaxError();

    /**
     * 测试表不存在错误
     */
    List<User> testTableNotExistsError();

    /**
     * 测试字段不存在错误
     */
    List<User> testColumnNotExistsError();

    /**
     * 测试数据类型转换错误
     */
    User testDataTypeError(String invalidId);

    /**
     * 测试违反唯一约束错误
     */
    User testDuplicateKeyError(User user);

    /**
     * 测试数据库连接超时错误
     */
    List<User> testConnectionTimeoutError();

    /**
     * 测试死锁错误
     */
    String testDeadlockError();

    /**
     * 测试PSQLException错误
     */
    List<User> testPSQLException();
}
